/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.eurotrader.entidades;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Edmilson
 */
@Entity
@Table(name = "ordemdeservico_has_equipamento")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findAll", query = "SELECT o FROM OrdemdeservicoHasEquipamento o"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByOrdemdeservicoId", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.ordemdeservicoHasEquipamentoPK.ordemdeservicoId = :ordemdeservicoId"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByEquipamentoId", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.ordemdeservicoHasEquipamentoPK.equipamentoId = :equipamentoId"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByPreventivo", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.preventivo = :preventivo"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByPreventivoRealizado", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.preventivoRealizado = :preventivoRealizado"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByDataHoraInicio", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.dataHoraInicio = :dataHoraInicio"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByDataHoraFim", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.dataHoraFim = :dataHoraFim"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findBySituacao", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.situacao = :situacao"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByUsuarioSolicitou", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.usuarioSolicitou = :usuarioSolicitou"),
    @NamedQuery(name = "OrdemdeservicoHasEquipamento.findByUsuarioComputador", query = "SELECT o FROM OrdemdeservicoHasEquipamento o WHERE o.usuarioComputador = :usuarioComputador")})
public class OrdemdeservicoHasEquipamento implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected OrdemdeservicoHasEquipamentoPK ordemdeservicoHasEquipamentoPK;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 1)
    @Column(name = "preventivo")
    private String preventivo;
    @Basic(optional = false)
    @Size(min = 1, max = 1)
    @Column(name = "preventivoRealizado")
    private String preventivoRealizado;
    @Basic(optional = false)
    @Column(name = "dataHoraInicio")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataHoraInicio;
    @Basic(optional = false)
    @Column(name = "dataHoraFim")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataHoraFim;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 30)
    @Column(name = "situacao")
    private String situacao;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 30)
    @Column(name = "situacaoServico")
    private String situacaoServico;
    @Size(max = 50)
    @Column(name = "usuarioSolicitou")
    private String usuarioSolicitou;
    @Size(max = 50)
    @Column(name = "usuarioComputador")
    private String usuarioComputador;
    @JoinColumn(name = "equipamento_id", referencedColumnName = "id", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Equipamento equipamento;
    @JoinColumn(name = "ordemdeservico_id", referencedColumnName = "id", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Ordemdeservico ordemdeservico;
   
    
    public OrdemdeservicoHasEquipamento() {
    }

    public OrdemdeservicoHasEquipamento(OrdemdeservicoHasEquipamentoPK ordemdeservicoHasEquipamentoPK) {
        this.ordemdeservicoHasEquipamentoPK = ordemdeservicoHasEquipamentoPK;
    }

    public OrdemdeservicoHasEquipamento(OrdemdeservicoHasEquipamentoPK ordemdeservicoHasEquipamentoPK, String preventivo, String preventivoRealizado, Date dataHoraInicio, Date dataHoraFim, String situacao) {
        this.ordemdeservicoHasEquipamentoPK = ordemdeservicoHasEquipamentoPK;
        this.preventivo = preventivo;
        this.preventivoRealizado = preventivoRealizado;
        this.dataHoraInicio = dataHoraInicio;
        this.dataHoraFim = dataHoraFim;
        this.situacao = situacao;
    }

    public String getSituacaoServico() {
        return situacaoServico;
    }

    public void setSituacaoServico(String situacaoServico) {
        this.situacaoServico = situacaoServico;
    }
    
    public OrdemdeservicoHasEquipamento(int ordemdeservicoId, int equipamentoId) {
        this.ordemdeservicoHasEquipamentoPK = new OrdemdeservicoHasEquipamentoPK(ordemdeservicoId, equipamentoId);
    }

    public OrdemdeservicoHasEquipamentoPK getOrdemdeservicoHasEquipamentoPK() {
        return ordemdeservicoHasEquipamentoPK;
    }

    public void setOrdemdeservicoHasEquipamentoPK(OrdemdeservicoHasEquipamentoPK ordemdeservicoHasEquipamentoPK) {
        this.ordemdeservicoHasEquipamentoPK = ordemdeservicoHasEquipamentoPK;
    }

    public String getPreventivo() {
        return preventivo;
    }

    public void setPreventivo(String preventivo) {
        this.preventivo = preventivo;
    }

    public String getPreventivoRealizado() {
        return preventivoRealizado;
    }

    public void setPreventivoRealizado(String preventivoRealizado) {
        this.preventivoRealizado = preventivoRealizado;
    }

    public Date getDataHoraInicio() {
        return dataHoraInicio;
    }

    public void setDataHoraInicio(Date dataHoraInicio) {
        this.dataHoraInicio = dataHoraInicio;
    }

    public Date getDataHoraFim() {
        return dataHoraFim;
    }

    public void setDataHoraFim(Date dataHoraFim) {
        this.dataHoraFim = dataHoraFim;
    }

    public String getSituacao() {
        return situacao;
    }

    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }

    public String getUsuarioSolicitou() {
        return usuarioSolicitou;
    }

    public void setUsuarioSolicitou(String usuarioSolicitou) {
        this.usuarioSolicitou = usuarioSolicitou;
    }

    public String getUsuarioComputador() {
        return usuarioComputador;
    }

    public void setUsuarioComputador(String usuarioComputador) {
        this.usuarioComputador = usuarioComputador;
    }

    public Equipamento getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(Equipamento equipamento) {
        this.equipamento = equipamento;
    }

    public Ordemdeservico getOrdemdeservico() {
        return ordemdeservico;
    }

    public void setOrdemdeservico(Ordemdeservico ordemdeservico) {
        this.ordemdeservico = ordemdeservico;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (ordemdeservicoHasEquipamentoPK != null ? ordemdeservicoHasEquipamentoPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof OrdemdeservicoHasEquipamento)) {
            return false;
        }
        OrdemdeservicoHasEquipamento other = (OrdemdeservicoHasEquipamento) object;
        if ((this.ordemdeservicoHasEquipamentoPK == null && other.ordemdeservicoHasEquipamentoPK != null) || (this.ordemdeservicoHasEquipamentoPK != null && !this.ordemdeservicoHasEquipamentoPK.equals(other.ordemdeservicoHasEquipamentoPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.eurotrader.entidades.OrdemdeservicoHasEquipamento[ ordemdeservicoHasEquipamentoPK=" + ordemdeservicoHasEquipamentoPK + " ]";
    }
    
}
